% -*- mode: erlang; -*- vim: set ft=erlang:

%% == Erlang Compiler == %%

{minimum_otp_vsn, "22"}.

{erl_opts, [
    debug_info,
    warn_export_vars,
    warn_missing_spec,
    warn_unused_import,
    warnings_as_errors
]}.

{erl_first_files, [
    "src/locus_event_subscriber.erl"
]}.

%% == Dependencies and plugins ==

{deps, [
    % {eqwalizer_support, {git_subdir, "https://github.com/whatsapp/eqwalizer.git", {branch, "main"}, "eqwalizer_support"}
    {tls_certificate_check, "~> 1.9"}
]}.

{project_plugins, [
    % {eqwalizer_rebar3, {git_subdir, "https://github.com/whatsapp/eqwalizer.git", {branch, "main"}, "eqwalizer_rebar3"}},
    {rebar3_ex_doc, "0.2.22"},
    {rebar3_hank, "1.4.0"}, % excluded on OTP 22 (see rebar.config.script)
    {rebar3_hex, "7.0.7"},
    {rebar3_lint, "3.2.3"} % excluded on OTP 22 (see rebar.config.script)
]}.

%% == Dialyzer ==

{dialyzer, [
    {warnings, [
        error_handling,
        underspecs,
        unknown,
        unmatched_returns
    ]}
]}.

%% == Xref ==

{xref_checks, [
    deprecated_function_calls,
    exports_not_used,
    locals_not_used,
    undefined_function_calls
]}.

%% == Profiles ==

{profiles, [
    {escriptize, [
        {erl_opts, [{d, 'ESCRIPTIZING'}]},
        {deps, [
            {getopt, "~> 1.0"}
        ]},
        {escript_name, "locus"},
        {escript_incl_apps, [getopt]},
        {escript_emu_args, "%%! +sbtu +A0 -noinput\n"}
    ]},

    {shell, [
        {erl_opts, [
            nowarn_missing_spec,
            nowarnings_as_errors
        ]},
        {deps, [
            {recon, "~> 2.5"}
        ]},
        {shell, [
            {apps, [locus]},
            {config, "shell.config"}
        ]}
    ]},

    {test, [
        {erl_opts, [
            debug_info,
            nowarn_export_all,
            nowarn_missing_spec,
            nowarnings_as_errors
        ]},
        {deps, [
            {jsx, "~> 3.1"},
            {maxmind_test_data, {raw, {git, "https://github.com/maxmind/MaxMind-DB.git", {ref, "8a15c1e"}}}}
        ]},
        {plugins, [
            % FIXME go back to non-fork once it can compile on OTP 27:
            % * https://github.com/alertlogic/rebar_raw_resource/pull/9
            {rebar_raw_resource, {git, "https://github.com/g-andrade/rebar_raw_resource.git", {ref, "21ac9b6"}}}
        ]},
        {cover_enabled, true},
        {cover_opts, [verbose]}
    ]}
]}.

%% == Hank ==

{hank, [
    {ignore, [
        "test/**"
    ]}
]}.

%% == ex_doc +++

{ex_doc, [
    {source_url, <<"https://github.com/g-andrade/locus">>},
    {extras, [<<"README.md">>, <<"CHANGELOG.md">>, <<"MIGRATION.md">>, <<"LICENSE">>]},
    {main, <<"readme">>},
    {proglang, erlang},
    {skip_undefined_reference_warnings_on, [
        % I couldn't get exceptions to individual functions to work (rebar3_ex_doc 0.2.22)
        "CHANGELOG.md",
        "MIGRATION.md"
    ]}
]}.
{hex, [
    {doc, #{
        provider => ex_doc
    }}
]}.
